# show_vectors.py
# 功能：从 Chroma 向量数据库中读取并显示所有存储的 text 文本内容
# usage: python ./src/vector/show_vectors.py

import os,sys
project_root = os.path.abspath(os.path.join(os.path.dirname(__file__), '..'))
sys.path.insert(0, project_root)
from config import project_config
import chromadb

# 配置（需与 vector2chroma.py 一致）
CHROMA_DB_PATH = project_config.chroma_location  
COLLECTION_NAME = project_config.collection_name  

def show_all_texts_from_chroma(db_path, collection_name):
    """连接 Chroma DB，读取指定集合中的所有 documents 并打印"""
    try:
        # 创建持久化客户端
        client = chromadb.PersistentClient(path=db_path)
    except Exception as e:
        print(f"无法连接到 Chroma 数据库，请检查路径是否正确：{db_path}")
        print(f"错误信息：{e}")
        return

    try:
        # 获取集合
        collection = client.get_collection(name=collection_name)
    except ValueError as e:
        print(f"无法找到集合 '{collection_name}'，请确认集合名称是否正确。")
        print(f"错误信息：{e}")
        return
    except Exception as e:
        print(f"访问集合时发生未知错误：{e}")
        return

    # 查询所有文档（使用 limit=None 获取全部）
    results = collection.get(
        include=['documents']  # 只需要 documents（即 text）
    )

    if not results['documents']:
        print(f"集合 '{collection_name}' 中没有找到任何文本数据。")
        return

    # 打印所有文本
    print(f"从集合 '{collection_name}' 中共加载 {len(results['documents'])} 条文本：\n")
    for idx, text in enumerate(results['documents'], 1):
        print(f"--- 文本 {idx} ---")
        print(text.strip())  # 去除首尾空白
        print()  # 空行分隔

    print(f"✅ 已显示全部 {len(results['documents'])} 条文本。")

if __name__ == '__main__':
    show_all_texts_from_chroma(CHROMA_DB_PATH, COLLECTION_NAME)